var jqGrid = {
	index : -1,
	grid : '#jqGrid',
	pager : '#jqGridPager',
	init : function(opt, grid, pager) {
		jqGrid.grid = grid || jqGrid.grid;
		jqGrid.pager = pager || jqGrid.pager;
		/* 表格配置 */
		opt = $.extend({
			url : "list.json",
			editurl : "save.json",
			responsive : true,
			mtype : "POST",
			datatype : "json",
			height : 250,
			rowNum : 20,
			styleUI : 'Bootstrap',
			autowidth : true,
			viewrecords : true,
			pager : jqGrid.pager,
			emptyrecords : '没有数据',
			onInitGrid : jqGrid._onInitGrid,
			loadError : function() {// 加载错误
				layer.msg("加载错误", {
					icon : 5
				});
			}
		}, opt);
		/* 初始化事件 */
		jqGrid._initEvent();
		return $(jqGrid.grid).jqGrid(opt);
	},
	initNav : function(opt) {
		// 初始化分页组件参数
		opt = $.extend({
			edit : false,
			add : true,
			del : false,
			search : false,
			refresh : false,
			view : false,
			position : "left",
			cloneToTop : false
		}, opt);

		if (opt.addurl) {
			opt.add = true;
			opt.addfunc = function() {
				location.href = opt.addurl + "?page=" + jqGrid.getPage();
			}
		}

		var editOptions = opt.edit ? jqGrid._initNavButton(opt.editOptions) : null;
		var addOptions = opt.add ? jqGrid._initNavButton(opt.addOptions) : null;
		var delOptions = opt.del ? jqGrid._initNavButton(opt.delOptions) : null;
		var searchOptions = opt.search ? opt.searchOptions : null;
		var viewOptions = opt.view ? opt.viewOptions : null;

		return $(jqGrid.grid).navGrid(jqGrid.pager, opt, editOptions, addOptions, delOptions, searchOptions, viewOptions);
	},
	addNavButton : function(opt) {
		return $(jqGrid.grid).navButtonAdd(jqGrid.pager, opt);
	},
	getRowData : function(rowID) {
		return $(jqGrid.grid).getRowData(rowID);
	},
	getPage : function() {
		return $(jqGrid.grid).getGridParam("page");
	},
	search : function(data) {
		var $grid = $(jqGrid.grid);
		$grid.setGridParam({
			'postData' : $.extend($grid.getGridParam().postData, data)
		}).hideCol("somecol").trigger("reloadGrid");
		return false;
	},
	_onInitGrid : function() { // 初始化表格高度
		var a = $(".content-wrapper").height();
		var b = $(".content-header").outerHeight();
		var c = $(".content").outerHeight();
		var $d = $(".ui-jqgrid-bdiv");
		$d.css("min-height", (a - b - c + $d.height()) + "px");
	},
	_initNavButton : function(opt) {// 编辑、添加、删除按钮配置
		return $.extend({
			resize : false,
			closeAfterEdit : true,
			closeAfterAdd : true,
			viewPagerButtons : false,
			beforeSubmit : function() {// 提交前
				jqGrid.index = layer.msg("正在提交...", {
					icon : 16
				});
				return [ true ];
			},
			afterComplete : function(arg) {// 提交成功后
				layer.close(jqGrid.index);
				if (arg.responseJSON.success) {
					layer.msg(arg.responseJSON.msg || "提交成功", {
						icon : 6
					});
					return [ true ];
				} else {
					layer.msg(arg.responseJSON.msg || "提交失败", {
						icon : 5
					});
				}
			},
			errorTextFormat : function() {// 提交失败
				layer.close(jqGrid.index);
				layer.msg("提交失败", {
					icon : 5
				});
			}
		}, opt);
	},
	_initEvent : function() {
		$(jqGrid.grid).on('click', '[event-click]', function() {
			$(jqGrid.grid).triggerHandler(new $.Event($(this).attr('event-click'), {
				relatedTarget : this
			}));
		}).on('delGridRow', function(e) {
			layer.confirm('是否要删除该行数据？', {
				btn : [ '确定', '取消' ]
			}, function() {
				$.postLoading('save.json?oper=del', $(e.relatedTarget).data(), function(result) {
					layer.msg(result.msg || '删除成功', {
						icon : 1,
						time : 1500
					});
					$(jqGrid.grid).trigger("reloadGrid");
				})
			});
		})
	}
}